package com.tihi.sina.share;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.sina.weibo.sdk.constant.WBConstants;
import com.sina.weibo.sdk.api.share.BaseResponse;
import com.sina.weibo.sdk.api.share.IWeiboHandler;

/**
 * 新浪微博回调页， 参考微信 WXEntryActivity 的思路；
 * @author tihi
 * 2015-8-25 14:34:49
 */
public class SinaWeiboCallbackActivity extends Activity implements IWeiboHandler.Response{
	public static final String SINA_RES_OK = "sina_res_ok";
	public static final String SINA_RES_CANCEL = "sina_res_cancel";
	public static final String SINA_RES_FIAL = "sina_res_fail";
	public static final String SINA_RES_UNKNOW = "sina_res_unknow";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		/** 以下是官方demo解释  */
		// 当 Activity 被重新初始化时（该 Activity 处于后台时，可能会由于内存不足被杀掉了），
        // 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。
        // 执行成功，返回 true，并调用 {@link IWeiboHandler.Response#onResponse}；
        // 失败返回 false，不调用上述回调
//		if (savedInstanceState != null) {
//            mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
//        }
		/** 个人注释， thduan */
		//由于一个应用，在manifest中只能给一个activity注册ACTION_SDK_REQ_ACTIVITY，当多个activity都有分享功能时就有问题了
		//所以使用该独立activity来注册，从微博返回到应用时，调起该界面，会走onCreate方法[应该之前该界面并没有被创建]，
		//所以无论 savedInstanceState 是否为null 都要调用handleWeiboResponse 方法
		//参考微信的  WXEntryActivity 思路
		try {
			SinaWeiboShareAPI.getWeiboShareAPI().handleWeiboResponse(getIntent(), this);
//			 SinaWeiboShareAPI.getWeiboShareAPI().handleWeiboResponse(getIntent(), this);
		} catch (Exception e) {
			e.printStackTrace();
			SinaWeiboShareAPI.init(getApplicationContext());
//			Toast.makeText(getApplicationContext(), "΢������ʧ�ܣ�������~", Toast.LENGTH_LONG).show();
			finish();
		}
	}
	
	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		/** 以下是官方demo解释  */
		 // 从当前应用唤起微博并进行分享后，返回到当前应用时，需要在此处调用该函数
       // 来接收微博客户端返回的数据；执行成功，返回 true，并调用
       // {@link IWeiboHandler.Response#onResponse}；失败返回 false，不调用上述回调
		/** 个人注释， thduan */
		//由于该界面是从微博返回后才被创建，所以不会走到该函数
		SinaWeiboShareAPI.getWeiboShareAPI().handleWeiboResponse(intent, this);
	}

	@Override
	public void onResponse(BaseResponse res) {
		Intent intent = new Intent();
		
		switch (res.errCode) {
		case WBConstants.ErrorCode.ERR_OK:
            intent.setAction(SINA_RES_OK);
            break;
        case WBConstants.ErrorCode.ERR_CANCEL:
            intent.setAction(SINA_RES_CANCEL);
            break;
        case WBConstants.ErrorCode.ERR_FAIL:
            intent.setAction(SINA_RES_FIAL);
            SinaWeiboShareAPI.init(getApplicationContext());
            break;
       default:
    	   intent.setAction(SINA_RES_UNKNOW);
    	   SinaWeiboShareAPI.init(getApplicationContext());
    	   break;
        }
		sendBroadcast(intent);
		finish();
	}

}
